# ZSNES v1.51 Documentation

## Getting Support

### APIs and Utilities

The following utilities are referenced throughout this documentation to help accomplish various tasks. There is a link to each utility and a short description of its purpose.

#### DirectX

DirectX is an API required for running ZSNES in Windows.

#### SDL

SDL (Simple DirectMedia Layer) is an API required for running ZSNES on UNIX-like operating systems.

#### Scitech Display Doctor

Scitech Display Doctor is a utility that provides drivers for many VGA and SVGA video cards. It can provide support for VESA VBE 2 on some video cards that may not normally support it.

The link above directs you to Scitech's FTP site. `regcodes.txt` provides registration codes for the two different versions of SDD offered, v5.3 and v6.53. The newer version supports hardware acceleration and more cards. If you are in a DOS-only environment, you should use one of the `-d.zip` versions. If you are in a Windows+DOS environment, use one of the `-w.exe` versions. `univbe67.exe` is a stand-alone VESA VBE driver, and does not provide any of the other SDD utilities.

Note: SciTech Software no longer offers support for this software.

#### NSRT

NSRT - Nach's SNES ROM Tools. NSRT, the most advanced SNES ROM tool to date, provides the ability to check, alter, retrieve info from, verify, fix, and organize SNES ROMs.

NSRT has several important uses in relation to ZSNES:

- You can use it to scan your ROMs and show detailed information about them. This information will tell you whether or not the ROM is a good dump.
- It can deinterleave your SuperFX ROMs so that ZSNES can load them.
- It can add special NSRT headers to your ROMs, which will allow ZSNES to automatically enable special controllers for games that need them.
- You can use NSRT to compress your ROMs using a special, custom-built compression format called JMA. This is an archive format designed by Nach based on LZMA. When used on SNES ROMs it is faster, and creates smaller files than 7Zip.

NSRT is primarily a command-line program, although a graphical front-end is available. The ZSNES Documentation Team has written a supplementary guide to NSRT that covers some of the functions listed above.

### Contact Information and Links

The following is a list of all official ZSNES websites and resources:

- ZSNES Home Page
- ZSNES Project Page hosted by BountySource.
- ZSNES Documentation on the Web
- ZSNES Documentation Project Page hosted by SourceForge.net.
- ZSNES Message Board

In your quest to solve whatever problem you may be having with ZSNES, or to learn more about ZSNES, please first read all of this official documentation.

The ZSNES Message Board is the primary place to receive help about ZSNES, after you have read through this entire documentation. It is also an interesting Internet community in its own right. Asking for ROMs (or asking for games, a link to a ROM site, or where to find ROMs/games) is forbidden! Be sure to also read the RULES!

### Known Issues

- 65816 lacks correct timing. Although ZSNES bases the timing on a variable cycle/instruction, it does not deduct correct values (such as 16-bit instructions should deduct 1 more cycle than 8-bit instructions). 100% cycles of ZSNES isn't 100% cycles of a SNES because of that. This means that a lot of games either won't run or will produce horrible displays. Sometimes, adjusting the % of execution can fix those problems. This is all due to inaccurate documentation used when the ZSNES 65816 core was written. Fortunately, there are currently ongoing efforts to rewrite the ZSNES core.
- Some games sometimes tend to not display things properly because of graphic features that aren't implemented yet.
- The Sound DSP chip still has its bugs (not many though). Additionally, no one knows the exact timing of the SPC700 chip.

### Filing a Bug Report

#### Before you file a bug report:

- Please verify that you have a good ROM. You should use NSRT to do this. You can find detailed instructions on how to use NSRT to verify your ROM(s) in this section of our NSRT Guide.
- Make sure you are using the current release of ZSNES. You can download the latest version from the ZSNES home page or from the ZSNES SourceForge Project Files page. If you were using an old version of ZSNES, and the problem goes away when you use the new version, please do not report the bug.
- If the bug still exists in the latest official release of ZSNES, please try again with the latest WIP release of ZSNES. These are unofficial versions, compiled from SVN source, and are updated somewhat frequently. They are available at ipher's WIP Page.
- If you want to check against the latest development code, go obtain it from SVN at BountySource. You are warned, however, that frequent changes are made to the code, so ZSNES may not always be able to compile when using code obtained from there.
- If possible, confirm whether the bug occurs on real hardware (as in, play the game on a real console).

Bug reports should be submitted in the Bug Reports/Feature Requests section of the ZSNES Message Board. Before reporting, please use the board's search function to see if your bug has already been reported.

#### When making a bug report, please include the following information:

- Version (i.e., v1.51) and port (i.e., Windows, DOS, or SDL) of ZSNES you are using. Make sure to specify the revision if you obtained ZSNES from SVN.
- Detailed ROM information:
  - You must post the NSRT information about your ROM when reporting a bug. Please see the Verifying a ROM to make a Bug Report section of our NSRT Guide for detailed instructions. Alternatively, you can use the Log Rom Info option in ZSNES to generate the file "rominfo.txt", which also provides the necessary information.
- Detailed system specifications:
  - At minimum, you must tell us what operating system you are using and what version of DirectX or SDL you are using.
  - If your issue is related to performance (as in, ZSNES is too slow), also include the specs for your processor, RAM, video card, etc.
- Detailed description of the bug:
  - A detailed description of the bug is important so that others can try to reproduce it.
  - Screenshots are highly recommended, and save states made before (or in some cases, during) the bug's occurrence are also greatly appreciated.
  - If you know of a previous version of ZSNES that ran the game properly, or if you know of another game that acts similarly, please let us know.
  - It may also be helpful to test the game in other SNES emulators and tell us the resulting behavior.